import Vue from 'vue'
import App from './App.vue'
import BaiduMap from 'vue-baidu-map'
import router from './router'
import './plugins/element.js'
import './assets/css/global.css'
// 导入iconfront
import './assets/font/iconfont.css'
import './assets/icon/iconfont.css'
// 导入axios
import axios from 'axios'
import Router from 'vue-router'
import qs from "qs";
import AMapLoader from '@amap/amap-jsapi-loader';
import dataV from '@jiaminghi/data-view'


const pending = new Map()
/**
 * 添加请求
 * @param {Object} config
 */
const addPending = (config) => {
    const url = [
        config.method,
        config.url,
        qs.stringify(config.params),
        qs.stringify(config.data)
    ].join('&')
    config.cancelToken = config.cancelToken || new axios.CancelToken(cancel => {
        if (!pending.has(url)) { // 如果 pending 中不存在当前请求，则添加进去
            pending.set(url, cancel)
        }
    })
}
/**
 * 移除请求
 * @param {Object} config
 */
const removePending = (config) => {
    const url = [
        config.method,
        config.url,
        qs.stringify(config.params),
        qs.stringify(config.data)
    ].join('&')
    if (pending.has(url)) { // 如果在 pending 中存在当前请求标识，需要取消当前请求，并且移除
        const cancel = pending.get(url)
        cancel(url)
        pending.delete(url)
    }
}
/**
 * 清空 pending 中的请求（在路由跳转时调用）
 */
export const clearPending = () => {
    for (const [url, cancel] of pending) {
        cancel(url)
    }
    pending.clear()
}
// 挂载axios 到Vue的原型prototype的$http
Vue.prototype.$http = axios
// 设置请求的根路径
// axios.defaults.baseURL = "http://10.245.150.106:30077/ices/acheng-demo1/"
// axios.defaults.baseURL = 'api/'
axios.defaults.baseURL = 'http://127.0.0.1:8090/'
axios.interceptors.request.use(config => {
    removePending(config) // 在请求开始前，对之前的请求做检查取消操作
    addPending(config) // 将当前请求添加到 pending 中
    console.log(config);
    // 请求头挂载信息
    config.headers.Authorization = window.sessionStorage.getItem("flag");
    // 在最后必须return config
    return config;
})
axios.interceptors.response.use(response => {
    removePending(response) // 在请求结束后，移除本次请求
    return response
}, error => {
    if (axios.isCancel(error)) {
        console.log('repeated request: ' + error.message)
    } else {
        // handle error code
    }
    return Promise.reject(error)
})
Vue.config.productionTip = false
Vue.use(BaiduMap, {
    // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
    ak: 'hy0lNoFG7jGKMNPemPLCHGyazdYmTZWs'
})
Vue.use(dataV)
const originalPush = Router.prototype.push
Router.prototype.push = function push(location) {
    return originalPush.call(this, location).catch(err => err)
}
new Vue({
    router,
    render: h => h(App)
}).$mount('#app')
// /**
//  * 设置日志级别
//  */
// eureka_client.logger.level('debug');
//
// //********************  测试监听  ********************//
// let updatedListener = function (apps) {
//     console.log("更新：" + JSON.stringify(apps));
// }
// eureka_client.onUpdated(updatedListener);
// eureka_client.start(function (error) {
//     console.log(error || '启动成功！');
// });